package com.minimalist.lindi.service;

import com.minimalist.common.entity.lindi.po.LindiSubsidyApplicationTownPayment;
import com.minimalist.common.entity.lindi.vo.subsidyapplicationtownpayment.LindiSubsidyApplicationTownPaymentVO;
import com.mybatisflex.core.service.IService;

import java.util.List;

/**
 * 林地指标平台_镇街支付明细表 服务层。
 *
 * @author 11987
 * @since 2025-07-06
 */
public interface LindiSubsidyApplicationTownPaymentService extends IService<LindiSubsidyApplicationTownPayment>{

    /**
     * 添加镇街支付明细
     *
     * @param subsidyApplicationTownPaymentVO 镇街支付明细VO
     */
    void addSubsidyApplicationTownPayment(LindiSubsidyApplicationTownPaymentVO subsidyApplicationTownPaymentVO);

    /**
     * 根据镇街支付明细ID删除镇街支付明细
     *
     * @param subsidyApplicationTownPaymentId 镇街支付明细ID
     */
    void deleteSubsidyApplicationTownPaymentBySubsidyApplicationTownPaymentId(Long subsidyApplicationTownPaymentId);

    /**
     * 根据镇街支付明细ID修改镇街支付明细
     *
     * @param subsidyApplicationTownPaymentVO 镇街支付明细VO
     */
    void updateSubsidyApplicationTownPaymentBySubsidyApplicationTownPaymentId(LindiSubsidyApplicationTownPaymentVO subsidyApplicationTownPaymentVO);

    /**
     * 根据镇街支付明细ID查询镇街支付明细
     *
     * @param subsidyApplicationTownPaymentId 镇街支付明细ID
     * @return 镇街支付明细VO
     */
    LindiSubsidyApplicationTownPaymentVO getSubsidyApplicationTownPaymentBySubsidyApplicationTownPaymentId(Long subsidyApplicationTownPaymentId);

    /**
     * 根据支付通知ID查询镇街支付明细列表
     *
     * @param subsidyApplicationPayNoticeId 支付通知ID
     * @return 镇街支付明细VO列表
     */
    List<LindiSubsidyApplicationTownPaymentVO> getSubsidyApplicationTownPaymentListBySubsidyApplicationPayNoticeId(Long subsidyApplicationPayNoticeId);

    /**
     * 批量添加镇街支付明细
     *
     * @param townPaymentList 镇街支付明细VO列表
     */
    void batchAddSubsidyApplicationTownPayment(List<LindiSubsidyApplicationTownPaymentVO> townPaymentList);

    /**
     * 根据支付通知ID删除镇街支付明细
     *
     * @param subsidyApplicationPayNoticeId 支付通知ID
     */
    void deleteSubsidyApplicationTownPaymentBySubsidyApplicationPayNoticeId(Long subsidyApplicationPayNoticeId);

    /**
     * 根据补贴申请ID查询镇街支付明细列表
     *
     * @param subsidyApplicationId 补贴申请ID
     * @return 镇街支付明细VO列表
     */
    List<LindiSubsidyApplicationTownPaymentVO> getSubsidyApplicationTownPaymentListBySubsidyApplicationId(Long subsidyApplicationId);

    /**
     * 根据补贴申请ID删除镇街支付明细
     *
     * @param subsidyApplicationId 补贴申请ID
     */
    void deleteSubsidyApplicationTownPaymentBySubsidyApplicationId(Long subsidyApplicationId);
}
